package RRHH_Modelo;

import Conexion.Conexion;
import java.sql.SQLException;
import java.sql.ResultSet;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

import java.util.Date;

public class RHH_SUBSIDIOS {

    private int ID;
    private int ID_USUARIO;
    private int TIPO;
    private String BENEFICIARIO;
    private Date FECHA_INI;
    private Conexion con = null;

    public RHH_SUBSIDIOS(Conexion con) {
        this.con = con;
    }

    public RHH_SUBSIDIOS(int ID, int ID_USUARIO, int TIPO, String BENEFICIARIO, Date FECHA_INI) {
        this.ID = ID;
        this.ID_USUARIO = ID_USUARIO;
        this.TIPO = TIPO;
        this.BENEFICIARIO = BENEFICIARIO;
        this.FECHA_INI = FECHA_INI;
    }

    public int Insertar() throws SQLException {
        String consulta = "insert into BROKER.RHH_SUBSIDIOS (ID, ID_USUARIO, TIPO, BENEFICIARIO, FECHA_INI) VALUES (" + ID + "," + ID_USUARIO + "," + TIPO + ",'" + BENEFICIARIO + "',to_date('" + getFECHA_INI() + "','dd/MM/yyyy'))";
        con.EjecutarSentencia(consulta);
        consulta = "select BROKER.RHH_SUBSIDIOS_SEQ.currval as ID from dual";
        ResultSet rs = con.EjecutarConsulta(consulta);
        rs.next();
        return rs.getInt("ID");
    }

    public boolean Modificar() throws SQLException {
        String consulta = "update BROKER.RHH_SUBSIDIOS set ID = " + ID + ",ID_USUARIO = " + ID_USUARIO + ",TIPO = " + TIPO + ",BENEFICIARIO = '" + BENEFICIARIO + "',FECHA_INI = to_date('" + FECHA_INI + "','dd/MM/yyyy') where ID =  " + getID();
        con.EjecutarSentencia(consulta);
        return true;
    }

    public boolean EliminarXid() throws SQLException {
        String consulta = "delete from BROKER.RHH_SUBSIDIOS where ID= " + getID();
        con.EjecutarSentencia(consulta);
        return true;
    }

    public RHH_SUBSIDIOS Buscar(int id) throws SQLException {
        String consulta = "select * from BROKER.RHH_SUBSIDIOS where ID = " + id;
        ResultSet rs = con.EjecutarConsulta(consulta);
        List<RHH_SUBSIDIOS> lista = Cargar(rs);
        if (lista.size() > 0) {
            return lista.get(0);
        } else {
            return null;
        }
    }

    public List<RHH_SUBSIDIOS> Todos() throws SQLException {
        String consulta = "select * from BROKER.RHH_SUBSIDIOS";
        ResultSet rs = con.EjecutarConsulta(consulta);
        List<RHH_SUBSIDIOS> lista = Cargar(rs);
        return lista;
    }

    public List<RHH_SUBSIDIOS> Cargar(ResultSet rs) throws SQLException {
        List<RHH_SUBSIDIOS> lista = new ArrayList<RHH_SUBSIDIOS>();
        while (rs.next()) {
            RHH_SUBSIDIOS objeto = new RHH_SUBSIDIOS(con);
            objeto.setID(rs.getInt("ID"));
            objeto.setID_USUARIO(rs.getInt("ID_USUARIO"));
            objeto.setTIPO(rs.getInt("TIPO"));
            objeto.setBENEFICIARIO(rs.getString("BENEFICIARIO"));
            objeto.setFECHA_INI(rs.getDate("FECHA_INI"));
            lista.add(objeto);
        }
        return lista;
    }

    public int getID() {
        return ID;
    }

    public void setID(int ID) {
        this.ID = ID;
    }

    public int getID_USUARIO() {
        return ID_USUARIO;
    }

    public void setID_USUARIO(int ID_USUARIO) {
        this.ID_USUARIO = ID_USUARIO;
    }

    public int getTIPO() {
        return TIPO;
    }

    public void setTIPO(int TIPO) {
        this.TIPO = TIPO;
    }

    public String getBENEFICIARIO() {
        return BENEFICIARIO;
    }

    public void setBENEFICIARIO(String BENEFICIARIO) {
        this.BENEFICIARIO = BENEFICIARIO;
    }

    public String getFECHA_INI() {
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
        return sdf.format(FECHA_INI);
    }

    public void setFECHA_INI(Date FECHA_INI) {
        this.FECHA_INI = FECHA_INI;
    }

    public Conexion getCon() {
        return this.con;
    }

    public void setCon(Conexion con) {
        this.con = con;
    }
}
